package hyy_2022;


import java.util.ArrayDeque;
import java.util.Deque;

/**
 *
 * 用两个栈实现队列
 * 实现两个函数 appendTail(队列尾部插入整数) 和 deleteHead(队列头部删除整数)
 * 若队列中没有元素, deleteHead操作返回-1
 *
 */
public class _0804_Offer09_CQueue {

    //输入栈
    Deque<Integer> inStack;
    //输出栈
    Deque<Integer> outStack;

    /**
     * 初始化
     */
    public _0804_Offer09_CQueue() {
        inStack = new ArrayDeque<>();
        outStack = new ArrayDeque<>();
    }

    /**
     * 队列尾部插入元素
     * @param value
     */
    public void appendTail(int value) {
        inStack.add(value);
    }

    /**
     * 队列头部删除元素
     * @return int
     */
    public int deleteHead() {
        if(outStack.isEmpty()) {
            if(inStack.isEmpty()) {
                return  -1;
            }
            in2out();
        }
        return outStack.pop();

    }

    /**
     * 将输入栈元素出栈,压入输出栈
     */
    private void in2out() {
        while (!inStack.isEmpty()) {
            outStack.push(inStack.pop());
        }
    }



}
